Communication systems allow a user of a device to communicate across a network. For example, the communication system may be a packet based communication system allowing users of devices such as personal computers, mobile phones, tablets and TVs to communicate across the Internet. To enable access to a communication system, communication client software may be provided by a software provider and installed on a user's device. The client software allows the user to register with the communication system and communicate over the communication system. The user's device may communicate with other endpoints of the network such as other user devices or servers of the communication system. Different types of client instances may be installed at the user device. For example, different types of client instances may be installed for execution on different platforms (e.g. different operating systems) which may be implemented at a device. The software provider may update the client software, e.g. to introduce new and/or improved functionality in a new version of the client software. Therefore different types of client instances may have different version and/or build numbers. The build number of the client increments for each change to the code of the client software. The version number of the client increments when the functionality of the client changes. A change to the build number generally signifies a smaller change to the client software than a change to the version number. In this way, the build numbers may be considered to be sub-divisions of the version numbers. Preferably, different types of client instance can communicate with each other over the network.
In order for a client instance implemented at a device to communicate over the network with an endpoint (e.g. another device or a server of the network), the client instance first determines the network address of the endpoint. As an example, where the network is the Internet, the network address may be an IP address of the endpoint. When the client instance has determined the network address of the endpoint, it can route data over the network to the endpoint. In order to determine the network address of the endpoint, the client instance may send an address query to an address system of the network, and in response the address system may return an answer to the address query which includes the network address of the endpoint. For example, the address system may be a domain name system and the address query may be a Domain Name System (DNS) query. The domain name system is a hierarchical distributed naming system for resources connected to the Internet or a private network. The DNS query includes the domain name (e.g. www.skype.com) of an endpoint to which the client instance intends to connect. The domain name system resolves the DNS query into an IP address corresponding to the domain name in the DNS query and returns the IP address to the client instance at the device. A domain name is easier than an IP address for a user to understand and remember.